Computers or other executing devices are ubiquitous in today's society. They come in all different varieties and can be found in places such as automobiles, laptops or home personal computers, banks, personal digital assistants, cell phones, as well as many businesses. One particular example of such an executing device is a multi-node, high-performance server used in a business for enterprise computing. Such servers allow for multiple Guest Operating Systems (GOSs) to share the hardware and processing power of the server to minimize the cost of executing multiple software applications such as online transaction processing, database operations, analytics and web hosting. However, because many GOSs may be operating simultaneously, errors occurring the system are typically plentiful and require quick and careful handling so that such errors do not impact the operation of all of the GOSs of the system.
In handling errors in the system, the server attempts to minimize any downtime and contain any bad data from infecting other components of the system, providing enough information such that the error can be diagnosed and isolated and limiting the effects of an error to a single GOS on other components of the system and/or other GOSs operating on the system. One approach to error handling within the server system is to dedicate a separate Service Processor for housekeeping, system initialization, environmental monitoring and error handling. The Service Processor is typically operates out-of-band communicating with the server over a low-speed path. Thus, in systems with many errors, the Service Processor may act as a bottleneck to the system as the lower-speed processor attempts to handle the errors and related interrupt sequence to address the errors. Similar bottlenecks can occur if the interrupts are handled by a specific dedicated node/core/thread.
It is with these and other issues in mind that various aspects of the present disclosure were developed.